{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\73170\\Anaconda3\\envs\\tf1.14\\lib\\site-packages\\tensorflow\\python\\framework\\dtypes.py:516: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n",
      "  _np_qint8 = np.dtype([(\"qint8\", np.int8, 1)])\n",
      "C:\\Users\\73170\\Anaconda3\\envs\\tf1.14\\lib\\site-packages\\tensorflow\\python\\framework\\dtypes.py:517: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n",
      "  _np_quint8 = np.dtype([(\"quint8\", np.uint8, 1)])\n",
      "C:\\Users\\73170\\Anaconda3\\envs\\tf1.14\\lib\\site-packages\\tensorflow\\python\\framework\\dtypes.py:518: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n",
      "  _np_qint16 = np.dtype([(\"qint16\", np.int16, 1)])\n",
      "C:\\Users\\73170\\Anaconda3\\envs\\tf1.14\\lib\\site-packages\\tensorflow\\python\\framework\\dtypes.py:519: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n",
      "  _np_quint16 = np.dtype([(\"quint16\", np.uint16, 1)])\n",
      "C:\\Users\\73170\\Anaconda3\\envs\\tf1.14\\lib\\site-packages\\tensorflow\\python\\framework\\dtypes.py:520: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n",
      "  _np_qint32 = np.dtype([(\"qint32\", np.int32, 1)])\n",
      "C:\\Users\\73170\\Anaconda3\\envs\\tf1.14\\lib\\site-packages\\tensorflow\\python\\framework\\dtypes.py:525: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n",
      "  np_resource = np.dtype([(\"resource\", np.ubyte, 1)])\n",
      "C:\\Users\\73170\\Anaconda3\\envs\\tf1.14\\lib\\site-packages\\tensorboard\\compat\\tensorflow_stub\\dtypes.py:541: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n",
      "  _np_qint8 = np.dtype([(\"qint8\", np.int8, 1)])\n",
      "C:\\Users\\73170\\Anaconda3\\envs\\tf1.14\\lib\\site-packages\\tensorboard\\compat\\tensorflow_stub\\dtypes.py:542: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n",
      "  _np_quint8 = np.dtype([(\"quint8\", np.uint8, 1)])\n",
      "C:\\Users\\73170\\Anaconda3\\envs\\tf1.14\\lib\\site-packages\\tensorboard\\compat\\tensorflow_stub\\dtypes.py:543: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n",
      "  _np_qint16 = np.dtype([(\"qint16\", np.int16, 1)])\n",
      "C:\\Users\\73170\\Anaconda3\\envs\\tf1.14\\lib\\site-packages\\tensorboard\\compat\\tensorflow_stub\\dtypes.py:544: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n",
      "  _np_quint16 = np.dtype([(\"quint16\", np.uint16, 1)])\n",
      "C:\\Users\\73170\\Anaconda3\\envs\\tf1.14\\lib\\site-packages\\tensorboard\\compat\\tensorflow_stub\\dtypes.py:545: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n",
      "  _np_qint32 = np.dtype([(\"qint32\", np.int32, 1)])\n",
      "C:\\Users\\73170\\Anaconda3\\envs\\tf1.14\\lib\\site-packages\\tensorboard\\compat\\tensorflow_stub\\dtypes.py:550: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n",
      "  np_resource = np.dtype([(\"resource\", np.ubyte, 1)])\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "import tensorflow as tf\n",
    "from tensorflow.examples.tutorials.mnist import input_data\n",
    "from matplotlib import pyplot as plt\n",
    "%matplotlib inline\n",
    "\n",
    "tf.logging.set_verbosity(tf.logging.INFO)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WARNING:tensorflow:From <ipython-input-3-b0ffac263758>:1: read_data_sets (from tensorflow.contrib.learn.python.learn.datasets.mnist) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Please use alternatives such as official/mnist/dataset.py from tensorflow/models.\n",
      "WARNING:tensorflow:From C:\\Users\\73170\\Anaconda3\\envs\\tf1.14\\lib\\site-packages\\tensorflow\\contrib\\learn\\python\\learn\\datasets\\mnist.py:260: maybe_download (from tensorflow.contrib.learn.python.learn.datasets.base) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Please write your own downloading logic.\n",
      "WARNING:tensorflow:From C:\\Users\\73170\\Anaconda3\\envs\\tf1.14\\lib\\site-packages\\tensorflow\\contrib\\learn\\python\\learn\\datasets\\mnist.py:262: extract_images (from tensorflow.contrib.learn.python.learn.datasets.mnist) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Please use tf.data to implement this functionality.\n",
      "Extracting ./train-images-idx3-ubyte.gz\n",
      "WARNING:tensorflow:From C:\\Users\\73170\\Anaconda3\\envs\\tf1.14\\lib\\site-packages\\tensorflow\\contrib\\learn\\python\\learn\\datasets\\mnist.py:267: extract_labels (from tensorflow.contrib.learn.python.learn.datasets.mnist) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Please use tf.data to implement this functionality.\n",
      "Extracting ./train-labels-idx1-ubyte.gz\n",
      "Extracting ./t10k-images-idx3-ubyte.gz\n",
      "Extracting ./t10k-labels-idx1-ubyte.gz\n",
      "WARNING:tensorflow:From C:\\Users\\73170\\Anaconda3\\envs\\tf1.14\\lib\\site-packages\\tensorflow\\contrib\\learn\\python\\learn\\datasets\\mnist.py:290: DataSet.__init__ (from tensorflow.contrib.learn.python.learn.datasets.mnist) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Please use alternatives such as official/mnist/dataset.py from tensorflow/models.\n",
      "(55000, 784)\n",
      "(55000,)\n",
      "(5000, 784)\n",
      "(5000,)\n",
      "(10000, 784)\n",
      "(10000,)\n"
     ]
    }
   ],
   "source": [
    "mnist = input_data.read_data_sets(\"./\")\n",
    "\n",
    "print(mnist.train.images.shape)\n",
    "print(mnist.train.labels.shape)\n",
    "\n",
    "print(mnist.validation.images.shape)\n",
    "print(mnist.validation.labels.shape)\n",
    "\n",
    "print(mnist.test.images.shape)\n",
    "print(mnist.test.labels.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x576 with 16 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(8,8))\n",
    "\n",
    "for idx in range(16):\n",
    "    plt.subplot(4,4, idx+1)\n",
    "    plt.axis('off')\n",
    "    plt.title('[{}]'.format(mnist.train.labels[idx]))\n",
    "    plt.imshow(mnist.train.images[idx].reshape((28,28)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "x = tf.placeholder(\"float\", [None, 784])\n",
    "y = tf.placeholder(\"int64\", [None])\n",
    "learning_rate = tf.placeholder(\"float\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "def initialize(shape, stddev=0.1):\n",
    "  return tf.truncated_normal(shape, stddev=0.1)\n",
    "\n",
    "L1_units_count = 100\n",
    "\n",
    "W_1 = tf.Variable(initialize([784, L1_units_count]))\n",
    "b_1 = tf.Variable(initialize([L1_units_count]))\n",
    "logits_1 = tf.matmul(x, W_1) + b_1\n",
    "output_1 = tf.nn.relu(logits_1)\n",
    "\n",
    "L2_units_count = 10 \n",
    "W_2 = tf.Variable(initialize([L1_units_count, L2_units_count]))\n",
    "b_2 = tf.Variable(initialize([L2_units_count]))\n",
    "logits_2 = tf.matmul(output_1, W_2) + b_2  \n",
    "\n",
    "logits = logits_2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "cross_entropy_loss = tf.reduce_mean(\n",
    "    tf.nn.sparse_softmax_cross_entropy_with_logits(logits=logits, labels=y))\n",
    "\n",
    "optimizer = tf.train.GradientDescentOptimizer(\n",
    "    learning_rate=learning_rate).minimize(cross_entropy_loss)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "pred = tf.nn.softmax(logits)\n",
    "correct_pred = tf.equal(tf.argmax(pred, 1), y)\n",
    "accuracy = tf.reduce_mean(tf.cast(correct_pred, tf.float32))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "batch_size = 32\n",
    "trainig_step = 1000\n",
    "\n",
    "saver = tf.train.Saver()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "after 100 training steps, the loss is 0.643877, the validation accuracy is 0.8712\n",
      "after 200 training steps, the loss is 0.461644, the validation accuracy is 0.9146\n",
      "after 300 training steps, the loss is 0.284042, the validation accuracy is 0.9288\n",
      "after 400 training steps, the loss is 0.162847, the validation accuracy is 0.9382\n",
      "after 500 training steps, the loss is 0.0906244, the validation accuracy is 0.9426\n",
      "after 600 training steps, the loss is 0.310709, the validation accuracy is 0.9502\n",
      "WARNING:tensorflow:From C:\\Users\\73170\\Anaconda3\\envs\\tf1.14\\lib\\site-packages\\tensorflow\\python\\training\\saver.py:960: remove_checkpoint (from tensorflow.python.training.checkpoint_management) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Use standard file APIs to delete files with this prefix.\n",
      "after 700 training steps, the loss is 0.278579, the validation accuracy is 0.9416\n",
      "after 800 training steps, the loss is 0.204623, the validation accuracy is 0.9526\n",
      "after 900 training steps, the loss is 0.249832, the validation accuracy is 0.9516\n",
      "the training is finish!\n",
      "the test accuarcy is: 0.9527\n"
     ]
    }
   ],
   "source": [
    "with tf.Session() as sess:\n",
    "    sess.run(tf.global_variables_initializer())\n",
    "\n",
    "    #定义验证集与测试集\n",
    "    validate_data = {\n",
    "        x: mnist.validation.images,\n",
    "        y: mnist.validation.labels,\n",
    "    }\n",
    "    test_data = {x: mnist.test.images, y: mnist.test.labels}\n",
    "\n",
    "    for i in range(trainig_step):\n",
    "        xs, ys = mnist.train.next_batch(batch_size)\n",
    "        _, loss = sess.run(\n",
    "            [optimizer, cross_entropy_loss],\n",
    "            feed_dict={\n",
    "                x: xs,\n",
    "                y: ys,\n",
    "                learning_rate: 0.3\n",
    "            })\n",
    "\n",
    "        #每100次训练打印一次损失值与验证准确率\n",
    "        if i > 0 and i % 100 == 0:\n",
    "            validate_accuracy = sess.run(accuracy, feed_dict=validate_data)\n",
    "            print(\n",
    "                \"after %d training steps, the loss is %g, the validation accuracy is %g\"\n",
    "                % (i, loss, validate_accuracy))\n",
    "            saver.save(sess, './model.ckpt', global_step=i)\n",
    "\n",
    "    print(\"the training is finish!\")\n",
    "    #最终的测试准确率\n",
    "    acc = sess.run(accuracy, feed_dict=test_data)\n",
    "    print(\"the test accuarcy is:\", acc)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WARNING:tensorflow:From C:\\Users\\73170\\Anaconda3\\envs\\tf1.14\\lib\\site-packages\\tensorflow\\python\\training\\saver.py:1276: checkpoint_exists (from tensorflow.python.training.checkpoint_management) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Use standard file APIs to check for files with this prefix.\n",
      "INFO:tensorflow:Restoring parameters from ./model.ckpt-900\n",
      "0.9375\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAcoAAAHRCAYAAADqjfmEAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nOzdd5gUxdYG8Pfssiw5R8mSkyBgRAUMGDHHi2L2ehUxYsSsGK6fOQfMARWz16woiJIkKCCogOQoOSywe74/qra7a5jpnd1Ju+z7ex4eTk/V1FRvh+qu6iCqCiIiIoouK9MVICIiKs3YUBIREYVgQ0lERBSCDSUREVEINpREREQh2FASERGFYENJREQUIu0NpYjcJiLbRWSjiFSN8zt/icg2EXktJI+KyCYRuTt5tU0+Ecm1875dRO7KdH2Sgct011qm5X15AvHNT1kiIi/Z+ZkfZ/52dvnni8gFMfL0FZECm++IpFY4yUTkUFvPAhE5tLjfL1FDaX8w+C9fRB4rRhEjVbWaqm6y5X0WUd42Efm1MLOqtgYwPI5yu6nqTYF6DhCR32yZ40SkUyAtV0QeEpElIrJGRJ4UkZyQeQ4r6xARmSciS0XktMDntUTkFxGpHpiXPFWtBuD1OOYnLezf4gUR+VtENojIFBE5spjFRC7TofbvtcH+bYYGM6dimUbM07d2x1whVsEicqqIzLJ1nCkixwfSyvoyHSwik0QkT0ReKkERkcuzn4h8JyLrou1sS8k2erBdNutFZK6IXBRI6yYiM0RklYhcGfg8R0TGi0izEs5P2ohIHRF53x5s/C0i/ypmEferastAebkiMsL+vZaJyFWFaao6x67TY4ooc4ldTz63ZYqI3CQiC2y5b4lIjcBvNhGRD0XkHxFZJCIXh8xvUWUNtcvzNxHpEvi8t4h8ECxLVb+287Og6D/TzkrUUNo/TDX7ww0BbAHwTknKsuUdGVHmuETKAwARaQuz47oYQC0AHwP4KLDjvB5ALwBdALQD0APAsBKW9TCAAQCOAPCUiGTbz+8BcK+qbkhkXtKgAoCFAPoAqAngZgBvi0jLBMoUAIMA1Ib5uwwWkdMTqWQcy6Ew30CYeQorqwmA1wBcBaAGgKEA3hCRBjZLWV+mSwDcBWBEksrbZMsaWlTGeCV5G80B8D6AZ2DW4dMAPCgi3WyWewBcA6AbgGEi0sh+fhWAUaq6MFnzlUJPANgGs88dCLNedk6gvNsAtAXQAkA/ANdK4meGgwCcBaA3gN0AVAYQPIl6DcA8mHk4GsBwEelX3LJEpDGA8wHsDuBpAPfazysA+D8AVyQ4H45kdL2eDGAFij7yiIvdOR8I4NUEizocwBhVHauqOwDcB6AJTGMAmJ3go6r6j6quBPAogPNKWFZVVf1NVafBrMh1RWRvAK1U9e0E5yPlVHWTqt6mqvNVtUBVP4FZmXsmUOb9qvqLqu5Q1dkAPoRZ4RNR1HKAiNQEcCuAa4soqymAtar6mRqfwjQGrW16WV+m76nqBwBWJ6m8Car6KoC5ySjPSuY2WgfmgOdVuzwnApgFoPAMtRWAb1V1MYA/ADQXkeYATgLwUBLnKSXEdIGfBOBmVd2oqmMBfATTkJTUIAB3quoaVZ0F4DkA5yRY1QEAXlDVhaq6EWaZniYiVUSkGoC+AO5W1e1223oXsZdpzLIANAcwRVXXA/gapsEETAP5karOT3A+HMloKM8G8IoGHhorImtF5IASljcIZuOZl2C9xP6LnO4Skt7U7miLW9YK27XTDUABgDUwZyRDEpyHjBCRhjBH8DMCn5V4mYqIwBz8zCgqb1FFIXw5AKa77CkAy4ooaxKAWSJyrIhk227XPADTbfoutUwjJbiNJq0aSNI2qqrLAbwJ4Fy7PPeDOVMaa7P8BqC/iDQF0BLAXzAN77Wquj1pc5Q67QDkq+qcwGfTAHQGABFpbpdp83gKE5HaMGdp06KVl4BoyywX5sxVAp8F04Pbb7xl/Qmgq4jUAnAogBm2+/x0AA8kOA87SaihtAulD4CXg5+rai17xFMSgwC8lEi9rK8A9BEz4FwRwI0AKgKoYtM/A3C5iNS33TCFO8AqOxdVZFkXA3gEwLMwR3j/AfANgEoi8oWYsZ0+UcotdWwX1usAXlbV3ws/T3CZ3gazrr2YYPVCl4OI9II5ay1yvFxV8wG8AuANmAbyDQD/LhyTwy60TKNJcHkmSzK3UcA0lLfALM8xAG4KdKleA7MMPwJwJcx6sgHAXDtm9r2InJLc2UuqagDWRXy2DkB1AFDVBXaZxjsGVy1Qxk7lJeAzABeISEt7QHOd/byKHa74EcDNIlJJRHrAnCXHWp5hZa0GcDeAb2G6cK+B2V6vA3CCXZ4f2gOjhCV6RjkIwNgknP0BAOwRbiOY0/GwfMGLfwZGy2N38mcDeBzAUgD1AMwEsMhmuRvAFABTYcZEPwCwHaYbuVhlqepUVe2rqvvYz8+DObN5HsDtAM4F8Ko9syq1RCQLpst7G4DBSSpzMMx6crSq5oXkS2iZ2ro/CeBy241XVL0OBXA/TFdQRZgDvudFpLv9rV1imWZKurdREekAYCTMulYR5szoWhE52v7W36p6lKr2gBkGuANm5/qA/d6xMGOadZIw+6mwEaZrOagGTGNf0vIKy4irPHEvuIx15joC5oBlNEwP0nf288JlOhCmG3whTM/P64G0YpWlqm+qag9VPRLmrDQPZn15AKbb9h0k6ewyGQ3ly0Xmit/ZAN6z/dExRVz8E/NKQ1V9V1W7qGpdmHGrFgAm2rQtqjpYVZuo6u4wYzmT7ZlGscqK8BCAYaq6BUBXAJNsf3kOgPrhs585dof/Aswg+0nJ6I4SkfNgLsg4RFVjbQwAkrJMa8Bc+DFSRJbBXzaLROTAKEV1B/CDqk6y47ITAYyH6caJVCaXaSZlYBvtAmC2qn5hl+dsAJ8CiHb19i0AnrfdtYXLcx3MDrhNArOdSnMAVLAXQBXqhhIOZ6jqGpiDk26Bj0PLCyzParHOXO3f/lZVbamqTW15i+2/wgOWY1S1vj0IrQtgQknKKiQilWEOYq+G6ZZdaMcuJwLYo+i/RtFK3FCKyP4wA+8JXZ0aKK8ygFOQnG7XwjJ72vGK+jBXw31c2J0o5jLl3cTYF+ZKz1tLUlYgz2EAKqm5GAYwF8QcLObKtFwk6cKKFHkKQEcAA2yDkBB7FjEcwGGqmrQLQEKWwzqYMZfu9t9R9is9YRrASBMBHFh4Bikie8KMo04PZiqry1REKohIJQDZALJtV1folcBFlJdly8sxk1LJdpcmWs9kbaNTALQVc4uIiEhrAMfAHYODmNtP+sKs74C/PBvC7GRLdPtAqtkhgfcA3CEiVUWkN4DjkNhFj6/AXAFc256RX4gE979ibmFpbZdBJwAPArhDVQtsekcRqS4iFUXkTAD9bZ5ilxUwDMBLqroEZvm1t8uzH5J18ZmqlugfzEr9aoy0jQAOjJF2G4DXonx+BoC/AUhxvhdIVwBtIj4bC9OV8I+tb9VA2kEA5gPYDGA2gIER3/0MwI3xlGXTc2G6iFoEPjvE/sZSAKdH5H8JwF0l/fsn8x/MUbwC2GqXXeG/gYE8xVqmMDug7RHlPZ3KZRqRr6X9foXAZzMi5mkwzEUBG2A2qKt3oWV6m53/4L/bEliefaOUNzqVyxPF30ZPhbloZwPM2eF9ALIivvMdgH0C091guntXAbiqOPOTgWVaB6b7eRNMg/CvQFpzu0ybx/juTuumXb9HAFgPYHnk/Ns8owFcEKPMvgAWRXzWzi6rzTD788i/6RUAVtp5GAugV0S6t14WVZbN0x7moDe4nQ+1y3MmgK4R+ecDOLTYf/sMLOxh9o+0FjF2clG+M9v+AUeE5NkKc1ZxZ6ZX6CLmJdfO+yYAt2a6PlymXKZcniWbn7L0D+bWj40A/oozf1u7/DcDOCdGnoNg7qFfC+DwTM9jEfNziK3nFgD9ivt9sYUQERFRFHwoOhERUQg2lERERCHYUBIREYUIvVz8sKxTOICZIV8VvJOSG9m5TDMnFcuUyzNzuI3uemItU55REhERhWBDSUREFIINJRERUQg2lERERCHYUBIREYVgQ0lERBSCDSUREVEINpREREQhSvx+OqJEzL9rPy/Or+TeX12/80ov/qnbqJhltP72XC+uPqGyk9bw0XGJVpGICADPKImIiEKxoSQiIgrBhpKIiCgExygpbdZ82taLf+v+eFzf2R7yeOjf+z3vxa/3auykvf1VHy/On/VHnDWk0kJ6dnamP/3oVS/u+vRgL252J8eiMyG7Vk0vnv347l4c3CYBYNiKnl7868B2Tlr+zDkpql3y8YySiIgoBBtKIiKiEOx6pZQJdrUCwI/d34rre0+v9btyHvzpMC9u2WKlk+/LTu958cDqS520u8+p58W7X8eu17JmxV41nOkdyPfiKkv4usZMK2jV1It/7fuMF0cOldzVYLIXdzthfyetGbteiYiIdg1sKImIiEKw65WSasch/lVu33Z7IiI1x4seXuNfAffdab3cbEtWeGG7NZO8OKtSJSfb8PFdvfjGer+69ai9I+46U+mzZo98Z3rRjjwvrvvCT+muTrlXoVlTZ7rVs39mqCaZwTNKIiKiEGwoiYiIQrChJCIiCpHWMcrVF+7nTDc/y+/n/n1FQydtW54/ntXkTT+usmijk69g6sxkVpEStLFJRS/OijgOC45Ljj7WH1/Mnzs7rrL/vH1PZ/qNOv8XmMp10pp+zmPAskZ7d/fiMcc86KT1+eEyL26DKWmrU3m24Bb/do6eR7j72fsbjyl2edX2d2/vWnizX3696f41BZU/nFDsslONexMiIqIQbCiJiIhCpLXr9dqhbzjTJ1Vd40+0DvliXz+cv2Ozk/TIyn6JVyxOE1a08OKq/1fTSavwzeTI7OVSrVf8S/dPnnSmkyZr1nvxjqXzi132BUd97UxXy8qNkZPKon86+S/fbpxdxUlr8m5OZHZKsen/fsyLt2t+SM74jO72uvtBNz98f5P/UoMRG453slX4NvP7Vp5REhERhWBDSUREFIINJRERUYi0jlE+euPpzvQte/jtdO1Z7mPn13QUL664x1ovvr/Le06+hxqP9+JPN1fz4qOruLeRhNmi27x4fF5VL+5babubMfBbbU77t5PU7pu4f67cSMaLWeff7d9SdH6tByJS/UfaXb10Xyel+tez/HokXAtKh0Mu8ce3P9hUy0mrNtq/hYjLM3VyRvtjhTmSnXB5U7YVePH87fWdtBOq/uPFp1bzH1t56qvPOvmOadITmcYzSiIiohBsKImIiEKkteu16rvjI6Zj560R4/PHGvV1pu/q3dL/zvf+k37u79sm7npV2OJ3D1Sd7r8AuO4Po5x8XSsGnhA0n5erp8ras/zu1h8H+d2tNbPct4f8lOd3DU29y31qT+X1pe/pHuTK7tzemR7e4E0vfmG9+7aK/LXr0lKn8mbL8Xs70+c2fseLg7eExHt7SJdvLnam63/j38KVu84t44a+/nnar6c8GrPMRTf4T/Bpes+4uOqRbDyjJCIiCsGGkoiIKESZe3HzjmXLnemqo/zp4Il91XdXl6j85Rf43X6dK7p/ngf+8buKWr44161XiX6NolnVw78COrK7Nejs0Rd4cbsP2NVa1iw+rG7MtMkbWkR8siW1lSlHgl3edz3oXmHaq+K2YM6YZQSfpDPsu5O8uOO1vzv58tevRyzt//BfkjDhWH873zt3q5Pvs//c78X9K13rpLUc7j+1R/PykCo8oyQiIgrBhpKIiCgEG0oiIqIQZW6MMhUqtGjmxY/f+LgXRz6Z4p1HDvXiukt/AiXHtq/c8aifOgRfyOyPXXT76WwnX8er//JiPq2l7FnfaXvMtKmPd3ema4HbW7IUBK69cMckYzvv7yOc6Q2n+W96abfIvz6gONth8Mldl7zk31Yy6d8PO/kaZ/u/9cv5btpJ7/n7BJ02C6nCM0oiIqIQbCiJiIhCsOsVwO9XNvHivXL9h7HP2OZekl5npvvSaCq5Cru39OI727zjpNUO3BIyOXDFd4s73Y6d/DVrQGVL3pF7efGH/R9z0u5Y5T/8us6o6U5aASjdblzey4vXX+DeypO/6I+k/lbLUau8+Obj3Rcc3NtoYlJ/qyR4RklERBSCDSUREVGIctn1mnf0Xs70Lyc/FJjyH+L7n8svd/JVHsenvyRL67cXe/GeFWMfr50ReMhyu2mZ74KhxCw62N/l7FHRferS2fO7enGDTe4TXig1wt45Ob1H8B3Bye1q3Yn4Q14VstyO9rA6Lrndjxsdn/RaeXhGSUREFIINJRERUQg2lERERCHK5RjlgiPd44Nq4o9LnjHvMC+u8vk0J5+CErHmbP/NLLc3DD59J9fJd/Z8/wlIHa/1X8bNp++UffW7rPDifHXHoip8WDvd1SmXZv+nihfH+0LmVJt/on/7ybv13WtBtmt2IHbru9utfpzKW4h4RklERBSCDSUREVGIctP1mlW9uhefdeBYJ219gf+i0BXDd/fi3DzejpCICk12c6YPHDLei6tl5UZm9/w0s40Xt1vDZVDWVWjlP/T+gfb+U5ieW9fMyVdnBB98ng7DDvw4I79boVlTZ3pDT3//8PS5T8ZVxoQ895Yi2bYj8YrFgWeUREREIdhQEhERhWBDSUREFKLcjFH+cVtnL/6kntsfftwfJ3lx7v84JpYss250x6A+aBR9bKTfr6c407wlZNfyx7/9sah9A0PTF/7Sz8nXDL+lq0qUATNvb+RMz+j/eFzfG7Wxnhc/dY27r6g0Kz2PFeUZJRERUQg2lERERCF22a7XdWe6L/+cftqjXvzXju1O2sb7/MuWc7E0tRUrRyYf+1DEJ9FvCal5iftMjR18IfMupaDZ1qifb1lbKerntOvIGd3Yi+9pPKpEZby0eH8vrvRxZt7gxDNKIiKiEGwoiYiIQuxSXa/BJ8FccfNIJy1X/Fk9fdpZTlr9z3ilayZtb1jTmc7Z1qTYZeSvXOVMa16eF0uu3+WbXb8eYsmvX8uZ/uPqinH9tub7L53tcNmfTlr++vVxlbEre3Kf16J+3uSz2C/kpdTJFn+oI+ylyOv/tW/MtNvveMGL+1WO3rUeWf7OD2CPb/nrwYuLzpRiPKMkIiIKwYaSiIgoBBtKIiKiEGV+jFIq+LPQ7ZNFXnxKtdVOvtc3NPDihje7xwepfOEnFe3Td0ckXMb+U85wplctr+HFtetv8OLxPd9I+LfCdBo22Jne/dry90aMrQP2dqYPqBS8pL/M73LKvHtHnuzFp57/cMx8P/z3CS8Oe8Hz9jjfaB/vS6K7fHOxM90Wv8T3AynEM0oiIqIQbCiJiIhClP1+kG7tvfDOBq/GzPbEcP9hurWmlb/usEw4buZAZ/qbLu+m7LfG7flmib63Wbd58XaN3Ql/1PRzvHjd1Ni3mDQZm54XyZZmC451++KCt2bdsaqrF1f7cLKTL84ePErQ7iP9W6kmnOk+HWnv3Ni3eiQq8qXLzy7r48VrLvEfmN5hXsQtVimrUfx4RklERBSCDSUREVEINpREREQhytwYZXands70RW99GDVfpxGXOtMtX/05ZXWi6CofPs+Z7jzcv3VC41zzqnf4x4uLc2tH5zHn+r+1oGrMfLu/u9GfmPBrzHy18UfUmIzsGv7tONf1/l/MfG98dpAX776D1wpkQv7MOV58y1UXOGkLB/jj9HOOfCapv3vJCPe2j2Z3jwtMle43BvGMkoiIKAQbSiIiohBlruv190tqO9MDqkR/O0PT0dvcD5QXn2daqxsT62o7Bj3j/y1MT+i3qHgKAm9rmbl5Nyft0MW9vLjt8BleXBou+y/vKn/ovgi5XWAk66Az/OGrnHOWO/k+7+y/nan/b6d7ccFLDZx86r9YBy2nrnTSytLy5xklERFRCDaUREREIcpE12vwIcvfDPi/iNQq6a0MEe0k+KLs2b3ctIr424vLUndbeVfjzcCdAhEPvjoB/j65KuYGUuYilrK87HlGSUREFIINJRERUQg2lERERCHKxBjlkt7ZXty8QuwxyeDLmXPWu7eH8OYQIiIqCZ5REhERhWBDSUREFKJMdL2GuWd1Jy/+6fCWXqxLYz/gmoiIKF48oyQiIgrBhpKIiCgEG0oiIqIQZWKMcvfr/bdOHHV9j5Ccy1JfGSIiKld4RklERBSCDSUREVEIUb7QmIiIKCaeURIREYVgQ0lERBSCDSUREVEINpREREQh0t5QishLIrJNRObHmb+diGwUkXwRuSBGnr4iUmDzHZHUCieZiJxv66ki0ibT9UkGEblNRLbb+aoa53f+suvBayF5VEQ2icjdyatt8olIrp337SJyV6brkyhuo3K7Xe9URMrEveZFKe/bKBDf/MSSUEMpIm1FZGsJfvh+VW0Zpbw6IrJSRMYWfqaqc1S1GoAxRZS5RFWrqerntiwRkZtEZIGIrBeRt0SkRuC3ZtiVpvDfDhH5OMZ8Bjfywn9nB9IfFpE1IvKTiDQJfD5QRB4JlqWqL9j5KVVEZLCITBKRPBF5qQRFjLR//022vH4i8p2IrIu2w1XV1gCGx1FuN1W9KVDPASLym10G40SkUyAtV0QeEpEldnk8KSI5sQouoqxDRGSeiCwVkdMCn9cSkV9EpHpgXvLsMn09jvlJqzK+jeaKyAibtkxEroqn4iLybbCRE5EKtuy1IvJZcNnZ378y+H1VvRVA53h+K51EpKOdt3Ui8qeInFDMIiK30Voi8rKIrLD/bgtmTmAbPdhuI+tFZK6IXBRIC13mEfPbQETetNvzOhH5UUT2CaR3s/vxVcFlKCI5IjJeRJqVcH52kugZ5RMAJiZYRtB9AGYlqaxBAM4C0BvAbgAqA3isMFFVO9uVphqA6gAWAHgnpLzCjbzw38sAICJ7A+gJoBGAsQBusJ/XBHANgFuSND+ptgTAXQBGJKm8TbasoUkqDyLSFqYxuhhALQAfA/hI/KP+6wH0AtAFQDsAPQAMK2FZDwMYAOAIAE+JSOHbw+8BcK+qbkjWfKVYmd1GAdwGoC2AFgD6AbhWijgbFZGB2PmJYyfCvLu9HoD1AP5t87aCWcaPoZSz6+WHAD4BUAfARQBeE5F2CRT7EIAqAFoC2BvAWSJyboL1zAHwPoBnANQEcBqAB0Wkm81S1DIPqgaz7vaEmeeXAXwqIoUnGvfA7GO7ARgmIo3s51cBGKWqCxOZl6ASN5QicjqAtQC+SUZFRGQ/mB3ci8koD2YDeEFVF6rqRpgN/DQRqRIl70EAGgAYVYLfaQVgrKrmwfwtdref3w3gv6q6rgRlpp2qvqeqHwBYnaTyJqjqqwDmJqM863AAY1R1rKrugFmmTQD0sekDADyqqv+o6koAjwI4r4RlVVXV31R1GoBtAOrag6JWqvp2EucpZXaBbXQQgDtVdY2qzgLwHIBzQupXE8CtAK6NSGoFYLRdzt/B30YfBXCN/by06wDTsDykqvmq+i2AH2EanZIaANNzsFlV5wN4AbG3l3jVAVADwKtqTIQ5sCrsrYl7v6yqc1X1QVVdauf5WQAVAbS3WVoB+FZVFwP4A0BzEWkO4CSYg4CkKVFDaU+V7wBwdZS05raLo3kxysuGOfIdDHPklwxi/wWnc2GOUCOdDeDdwi6JGBqIyHLbHfeQ+P38MwAcKCKVARwCYIaI9ALQXlXfSHw2Sge7TA/IdDWw8zIVmJ13rPSmdgda3LJW2K6dbgAKAKyBOcsckuhMpENZ30ZFpDZMwzAtkD4N4V2iwwE8hZ0f+vwbgINFpCLMmekM2225SlXHomyQGJ918SZKto1G/v27xMoYD1VdDuBNAOeKSLY9uGoB09tW+Bvx7pfdiop0h2ko/7Qf/Qagv4g0hTkr/gvm4OdaVd2eyHxEKukZ5Z2wRwWRCaq6QFVrqeqCYpQ3BMB4VZ1cwvpE8xmAC0Skpd1RXmc/d45c7JHMyQBeCinrdwDdATQGcDBMV8CDAKCqv8Gcif4MoDnMEdIjAIaIyBAR+UFEXheRWsmasUywyzTTO5WvAPQRM2ZcEcCNMBtO4TL9DMDlIlLfdsMUNmrRehGKKutimOX4LMxR+39gzswqicgXYsZf+0Qpt7Qo69toYfdasEdmHcwwyU7swWlvRO/G+x+AeQAm2TLegjnzvE5E7rbb6JN2PSitfgewAsBQOwbXH6b3w1u3S7CNfg7gehGpLubCwvMQfVsprjdhhpzyYMatbwqsh3HtlyPZA79XAdwe6KW7Bma7/AjAlTDLfwOAuSLyoYh8LyKnJGF+it9Q2lb9UCTp1FZEdoPZCG8qKm/gO8GLamIdFY+AWWCjYc76vrOfL4rIdyKAfwB8H+v3VHWZqs5U1QJVnQfTtXNyIP0hVe2mqqfB9MmPgfnbXgRzljkLZvyMYhBzkUXhMh0YLY+q/g5z9v84gKUwY04z4S/TuwFMATAVwDgAHwDYDrODKVZZqjpVVfuq6j728/NgzlieB3A7gHMBvCoi0Y70M2oX2UY32jh4oUcNmB1h5G9lAXgSwOXRulFtF+D1qrqHql4Esy0+DTOe3QumwamIxLsdU8aeIR0P4GiYM+arAbyNnfdnxTEEwBaYbssPYZZFzPLi2UZFpAOAkTDd5hVhegCuFZGjbZZ498vBMivDXEPws6reU/i5qv6tqkepag9b/ztgGs8HbB2OhRkfrRP2R4hHSS597gtzmrvA7iOqAcgWkU62wsW1N8yZ2kxbXmUAlUVkGYAmqpof+YXIq0ZFZPcoeQpgjhpvtXn6A1hs/wWdDeAVLd5DbxVRukJEpCHMhQL7wvTFT1fV7SIyEcDlxSi/3FHVI+PM9y6AdwFz1R7Mzm2iTdsC0zU42KZfBGBytHWoqLIiPARgmKpuEZGuACap6jZ74UJ9RGmIM6wvyvg2qqoFIrIU5kKNr+xXusHsXCPVgGnwRtr6FV54tUhETlFV72pcEekCYH+YM5mhMOuH2m20G0oxVZ0OfwwdIjIO5gKXkpb3DwCvwROR4QAmhOSPZxvtAmC2qn5hp2eLyKcAjgTwaTH2y4V1yoU54F0MexFWDLcAeF5Vl9ttdJiqrhORRQDahM1XPLUi6EoAACAASURBVErSUD4L03VR6BqYjfI/JazDZ/b7hU4D8C8Ax8XawcXDHkXUhrmYpCNMV+kddkEV5mkKM2ZxcRFl9bXlLATQFMC9MEcwkR4EcKuqbhaReQD2EnOFVuH3Sy0xV9VVgNnJZItIJQA7Snqhgz3Krwggx0xKJQAFqrotwXr2hDljrANzNvixPTuEmFtzFOYMcR8ANwM4vyRlBfIcBqCSqn5iP5oHM961EGZsJSkXPyXZrrKNvgJzNeMkAA0BXAhzJh9pHcx4ZqFmMDvGngBWBn5PYMZZL7cN8TwAg22Xax8Av5R0XtJBRPYAMAemt+oSmIOXlxIorzXMxV5rAfSH6QFLdDhhCswY88HwL5w6BmZIKq79cqB+OTAHslsADIqWx+brBLOP7W0/KtxG18GMfRZniCGqYne92iuklhX+g+ki2WqvMiy8UCCsuyWyvLyI8tYB2G7jRNSDGZvYBLOhj7BXTQWdBeAnVf0r8st2Hg60kz0A/GTLGgcziDwkIn8/ALVU9X07XxMAfArTuPaDaVxLs2EwK+T1AM60sXdrRcTfIx4H2TL+BzN2uwXAl0mo5yMwG/Zs+/+FgbTWMMtnE8yR9vWq6v2m7Tq6Mc6yCo9m/wu3N+AymG67rwFckkhDkSq70DZ6K8wFGn/DDI38V/17ML15sF2rwfoVNo7LIw7MzgXwm6pOstPvwdwWtRJAXZhbGkqzs2AOAlfADOkcpuZqewAl2kZ7AvgVpjv7HgADVTXaGXvc7L70PJiLatbDLLdRMFfUAkUscxF5WkSetpP7wzSy/QGsDXT7Rs5j4cFP4bZ4A8z+eQaA4UlYTwFVTes/mEu8NwL4K878bWF2YpsBnBMjT+FOeS2Aw9M9T8Wc/3NtPbcC2D3T9UnSPA2zK/5amNsq4vnObLsejAjJsxVmp3xnpuexiHnJtfO+CaZHIeN1SnB+yvs2eqtd77YCyM50fZI0T+V6G413fmL94/soiYiIQvCh6ERERCHYUBIREYUIver1sKxT2C+bIV8VvJOS+/O4TDMnFcuUyzNzuI3uemItU55REhERhWBDSUREFIINJRERUQg2lERERCHYUBIREYVgQ0lERBSCDSUREVEINpREREQh2FASERGFYENJREQUgg0lERFRCDaUREREIdhQEhERhWBDSUREFIINJRERUQg2lERERCFCX9xcWuT36+HFg59920l7qm2blP3uhtP2daZrTV3l12n2nyn7XSq+tYP2c6bH3/uUF3d64hIvbn7fBCef7tiR2ortwiq0aObFDUau9eLvJ3dy8nV40k/LnzE79RWzsuvXd6ZXH+nvK2qP/MWLNS8vbXWisolnlERERCHYUBIREYUoE12vfx+e68V1sjem7XeXHb3Nmd5+ln9cUeeYtFWDYqjQZDcvvvOW52Pmm3npk1585KMHOmm6YUPyK7aLqtCooTN9x+hRXtw+p8CLD17dyMmXP+OP1FYsINjdOnDsL07avpXe9+JLf/23nzBlRsrrVdZl16vrTM9+qLkX923rL9/FfbY7+XaVbm2eURIREYVgQ0lERBSCDSUREVGIUjtGKTkVvfjgg6dmpA7Vp1Rypk89/3sv/q5WUyctf+26tNSJfCsOb+HF/atsj5mvx6TTvLj+xjkprdOupkLTJl5cc+RmJ22Pitle3P7ri7247dnu2GA6zbqrpRefWu1zJ63Hw9d68W5TxqWrSmXWisH7e/Gtl7/ipB1d5cuo3zm+3gBnesfiJcmvWAbwjJKIiCgEG0oiIqIQpbbrdcMJ/tN4Hm3ymBd3/GCwk68txqesDnm11ZkeUvt3Lx5dvaObmV2vKZdVpYozffiQsXF9L/et2v6EauyMtJM1vf2n73zQ8omY+ToOW+HF6XzWke7XzZn+85hnvLjPr6c4ac1G+NtvfmqrVWZlt2vtxc9f/bAXd6/oNhUFiG7pU9Wd6cb/9m8V2rF0WeIVzBCeURIREYVgQ0lERBSCDSUREVGIUjNGqb27O9NP3PeIF7+23r8NoMMw9/L+VI417Nf/txSWTsWVt787LnxXgxdi5t1c4D9+sMYbP6esTrua4BtBAGDlcVtj5u31wGVe3Ghh+m63CI5LDnv95Zj5Nn7qPkqv6uq5KavTrmLW9f54fvD2n3iN7/mGMz3nJ387PPHVq5y03e+e4sUFW2OvZ6UBzyiJiIhCsKEkIiIKUWq6Xtfc4D71o2kF/yLzqy472otz1kxOaT0qNPa7a15s7j7ZY7vyuCKT5p0Yf1fQyX8cH5jaNZ4Okg4LH6nmTP+x90tePGyFOzzS5EX/rRvpvN1icd+qXtw7171Rocu4s724+WN8+k5Rsju1c6a/PuThwFRlL7pvtTvsMWmt//aQka3d/WRQu8AT1p4b+JSTdt+I47y4YN7fcdU3U7jnJyIiCsGGkoiIKERGu15XX7ifF7/T9b9O2ivr9vDinK9T290aNPMO/6q/7ep2KJ09/1Avzl+xMm11IuPovabFTFtXsMWZ3n6b/5LhLHa9xk1VnOngNjB+dUsnLXvLCqRKVnX3CS+z7+7kxR8c+6AXFyDHydf8lF9TVqdd0aq93Rcyt6zgP/3qooUHefGifTc6+bKq+kNlPS/2r36+5sK3nXwDq/vryEHuOybw8agFXjzz6NL9BB+eURIREYVgQ0lERBSCDSUREVGIjI5RZh2/yot3q5DrpL3wxhFe3BSpvcw7u3N7L37tEP/tA3nqvgx4wYP+pdRV81L31hLy5R21lxc/3uS5mPkWRbyyIuv7KdEzUon9r8MHzvT5o/t58YINjb142wvuE3HitexA/80uR+3jvqz9o92eDEz545K9p57u5KuNP0r02+VVvrvbRQH8ZTD9ma5eXAc/ufk2bfLixv/n75/fHrCXk++M6p/4E+reyrM8zx+H1q158Vc6A3hGSUREFIINJRERUYi0dr1m16/vTA9r92nMvE2Hp++pGr9fUsuLe+X6l8M/saaTk6/qKHa3ptvyvXKKzgRgwCdXONOpfKH3rqzBY5Wd6e+e9a/p71fZfXD1C82/8+Is+LeVFDxYspdjO2UgdhlvbvBv/al7Y3wvFKboqp+0NGbausP97tU6L8ZX3i0tPor4JPa52JgpHby43ZoJ8f1AhvCMkoiIKAQbSiIiohBp7XqVKu6jGQ6vss6L9544yElrhFlpqRMA1Gv5T9TPX5/Xy82HOVHzUepU3HNNzLRZ2/yng3R4dJWTls6HdO9KKnzrPgXrkQMO9uI792/ppC3q73eP/jngaS+ekOc+3efMLy+O67fbvuJf+fjpOyNi5rt/5uFe3GTajJj5qGgbRjV2P+jsh+d08ocvfthrbyfbyj39h+frMf7+s0uO24U6a7t/50DnwAPSAeD9Ix/z4uv2vdBP+Hl60RVPM55REhERhWBDSUREFIINJRERUYi0jlEW/LPWmb5zZQ8v/lfrSU7aD41be3GynyZfoUUzZ/rH7m8Fpvxjhy0/14v4Jsco02HrMf54yKS9gi97dV/cPHt7Ay/On/NXqqtVLu1YttyLq7y33Elr954fH3VxD8TSDvFd+p+1h3+7QPBWEQC4a1UXL25xuX9tQ8QDmaiYGn00z5mec8M2Lx5ad6YXX/eBe81IrNt3TvvraGd6yxD/lsAT3hztpJ1bY6EX/zXE3++2/rmISmcAzyiJiIhCsKEkIiIKkd6u1w0bnOkvF/tdLWO6v+GkLf2kpp/2zH4orrWd3K6Bai397pp9d5vv1ivG8zykZA8YoQRtqed3seZIdsx8104+0YtbofRdUk7Fs+BWf1lHdu19ebf/EuFqC0th31wZFTmsddFQ/wlXLz7gvyC7XU5V94uBB5y3+dK/taPD4N+dbAWb/O7be78d4KSdf7w/rHJfL78f//lubvdtwbT03SoYC88oiYiIQrChJCIiCsGGkoiIKERGX9xc+3b/kXZ9bjvDSXu/y0tefN+t7ktD4zEpzx3byg8cE/SquC0ityCa5o/96kzzzQTpkXf82qifBx9ZBwBNn4/vzSJUOq26yL32YPq+T3jx/B1bnLTKKyO3WUqFau/4j607F1d58T+nutve1nX+G587DvVvzcoPvNA5UvvrZzrTh7T1rzH4qvMoL771Vvf8rcmJyDieURIREYVgQ0lERBQio12vmOB3bdY8yk06q+8QL17bNhfFVfe52N21i9/r7ExP3uelqPkib2eh1Mhu19qZnrTXa8FUL/psYxcnX87X7psuqGzZfNjGmGknT73AmW7w3S+prg5FCHbDVnsndr5439QTuT9d/35gew7sku/bY5ST78nGfb042U9pixfPKImIiEKwoSQiIgqR2a7XENmj/a6WuqOTW/aW+dXdD/aJnk97d3em5cepya0IAQCW92vgTMd6Gs/j3x3mTLfF+Kj5qGx4puerzvTSfP/KyroPV0l3dSjN6j/jPyx/nyP/5cXje7pPabv8mpZe3Ppqdr0SERGVOmwoiYiIQrChJCIiClFqxyhTKuJBPFkxjhc4JpkeW+tEfzISAEzO85/I0vG+RU4aX9pb9iy6YX8v7p3r3vLxc54/LpnN20F2fQX+jSV1/89f9qtedZ/KNOt0/4lNA94Y5KTp5BkpqpyLZ5REREQh2FASERGFKJ9drxEvZI714mZKjwYHL46Z9tH6Pb04f+WqdFSHUmjgGd94ceTLmc+fdI4Xt4D7QoLsunX8iQZ1vTB/1h/JrSBlRNb3U7y478tDnbSZ5/ldrxvudrtla5zi3+qXyiep8YySiIgoBBtKIiKiEGwoiYiIQpTLMcqCSrHHJFfm56WxJuWX5PpvhDlut2kx863eVs2LNY/LZldWkO8ft68YvL+TdvQFY7z4g7mNvbg0vNSXkqvNswud6VdPaeTFP3R910k7ott5Xpw1NnW38/GMkoiIKAQbSiIiohDlsuv1tSOedqZnbfO7Ys946Vovbo5xaatTuZPvP5Xj2VkHOElX7D/fi0cvbOPFTZCep3BQZsw66EUvLjjIvXWk8w9+F1ub2zZ5cbwvDaayY8dC9wlcb5/Qx4vP+nqkk7Zq6FYvbjA2dXXiGSUREVEINpREREQhymXX6x3zjnWmNz3ZxIubj2J3azroDv+R5i2v3+SkdbznLC+WqREv2aYy7Yub/G60mTc0dtJ+Gt/Bizs8ssRJa71sthfnb90KKj+CT186bW5/J+3jPZ/34vP3vcRP+Hl6UuvAM0oiIqIQbCiJiIhCsKEkIiIKUS7HKHGIe/lxVSyKkZHSIf/Pec5081MyVBFKuUofT/DilR+7aW3wsxfzpdwUzeYT3NuGxo/bzYvXtK/qxbV/RlLxjJKIiCgEG0oiIqIQ5bPrlYiIypz8Vaud6Wfb7e7FtfFTyn6XZ5REREQh2FASERGFYENJREQUgg0lERFRCDaUREREIdhQEhERhRBVLToXERFROcUzSiIiohBsKImIiEKwoSQiIgqR9oZSRF4SkW0iMj/O/LkislFEtovIXTHytBQRtfkuSmqFk0xE2tl65ovIBZmuTzKIyG12+WwUkapFfwMQkb/sevBaSB4VkU0icnfyapt88ayjZUkJttEi12kR6SsiBTbfEUmtcJKJyKG2ngUicmim65MM3EYT20ZL1FCKyGgR2Wp/eKOIzC5mEferasuIMg8VkV/sH32hiJwKAKqap6rVALweR7m1VPXZQJmnisgsEdkgIjNF5PgY8/OtXeBRn30rIhVF5F0RmW/z9Y1I/5eILBWRecE0EWktIuNEJLvwM1WdY+dnTBzzkzYi0tH+HdaJyJ8ickIxixipqtVUdZMtr5aIvCwiK+y/24KZVbU1gOFxlNtNVW8K1DNbRO4SkSV2uU4RkVo27enAOrlRRPJEZEPIPD8rIrPtDvGciLRD7PJcKiKnBT6vZdfT6oF5Kc46mhYiUkdE3rfb098i8q9iFuFso3ZHM0JE1ovIMhG5qjCtGOv0EruOfG7LFBG5SUQW2HLfEpEagd9sIiIfisg/IrJIRC4Omd+jRWSsiKy19XsuuIxEZKiIrBKR30SkS+Dz3iLyQbAsVf3azs+Cov9M6SUip9t92ibbkB1YjK8726gtr4eI/GC3l+UicnlhWgLb6AD7d95o93+dIubhSruM1tl1KjdkfmPuw9O5jSZyRjnY/tGrqWr7BMqB/UO+AeAmADUBdAcwOcEymwB4DcBVAGoAGArgDRFpEJFvIOJ7OPxYAGcCWBbx/QoA7gXQA8BlAB4PJD8K4CpVzS/hbKSFnYcPAXwCoA6AiwC8JiLtEij2IQBVALQEsDeAs0Tk3ASrCgC3A9gfwH4wy/UsAFsBQFUvDqyT1QC8CeCdkLKmAbgEwC9R0h4GMADAEQCeChzs3APgXlWN2QCXEk8A2AagIYCBMPPQOYHybgPQFkALAP0AXCuJnxkOgll+vQHsBqAygMcC6a8BmAczD0cDGC4i/WKUVRPAXbacjgCaAvgvAIhIYwDnA9gdwNMw22vhev9/AK5IcD7SQkQOA3AfgHMBVAdwEIC5CZRXD8DnAJ4BUBdAGwBfJljHtjCN0cUAagH4GMBH9m8NETkcwPUADoHZN+wOs01HK6uofXjattHSMkY5DMAzqvqZqu5Q1dWq+leCZTYFsNaWqar6KYBNAFoXZhCRmgBuBXBtWEGquk1VH1bVsQAiG726ABar6lIAX8MseIjIyfbzJL9CNCU6wOxgHlLVfFX9FsCPMDuxkhoAc1ayWVXnA3gBwHmJVFJEasPs1C5U1b/tcv1NVbdGyVsVwEkAXo5Vnqo+oarfwDa0EarasqfBNDh1RWRvAK1U9e1E5iPVAvN+s6putOvtR0hseQ4CcKeqrlHVWQCeA3BOglUdAOAFVV2oqhthGoHTRKSKiFQD0BfA3aq63S6HdxFjHVLVN1T1c7u+rbH1622TmwOYoqrrEdhGYdalj+z6WRbcDuAOVf1ZVQtUdbGqLk6gvKsAfKGqr9szrg122SbicABjVHWsqu6AWaZNAPSx6WfDLPMZdjndidjrUVH78LRto4k0lPfYrowfxe1ubG67P5oXo6x97Xd/tafRr4lInQTqBgCTAMwSkWPFdNcdDyAPwPRAnuEAnkLEWWIxrYRZQE0BHAZght3IhwG4IYFy00lifBbsolorIgckUK5TXgl1BbADwMm262aOiFwaI+9JMMvmhxL+1goR6SYi3QAUAFgDcwQ7pITlpVM7APmqOifw2TQAnYHib6P2AGU3W8ZO5SVAsPM6kgtz5iqBz4Lp8a5DBwGYYeM/AXQV00V/KMw22gzA6QAeKFnV08ueLfUCUF/M0MgiEXlcRCoH8hR3G90XwD+2e3SFiHxczP121Kpi52UWXG6dsfN61FBE6kYpq6h9eNq20ZI2lNfBHJU1AfAsgI9FpDUAqOoCVa2lqsXp328Kc7R7EsxGEtkFU2y2u/MVmC7dPPv/vwNjaL1gjjgT/Z0CAP+BOdq9BsCFAO6w5XYVke9E5IvguEgp9DuAFQCGikiOiPSHOQKsUpjBLtOxxSjzcwDXi0h1EWkDcyZQpYjvFKUpTBdbOwCtAJwM4DbbJRXpbACvaMmfqHExgEdg1u+zYJbxNwAq2eX5nYj0CSsgg6oBWBfx2TqY7rqSbKPVAmXsVF4CPgNwgZiL8WrC7FcAoIrtNvsRwM0iUklEesDsH4pch+z6cDaAWwBAVVcDuBvAtzBduNfALNvrAJwgIt+LGQttmuD8pFJDADkw6/yBMMNTe8IckAMo0TbaFObvdDnMWfc8mOGKRHwFoI+Yi7cqArgRQEX4yy1y3SyMd1qXitqHI43baIkaSlUdb0/T81T1ZZgV+qgE6rEFwIv2ooCNMGd6McsTkRniX7ARdTBbzNVq98N031SE2fE/LyLdRSQLwJMALrfdAwlR1W9UdV9V7QNzZNMLwEsAXoXpVrgTwPOJ/k6qqOp2AMfD7ESWAbgawNsAFiVQ7BCY5foHzPjnm2HlichngWU6MEa2Lfb/O1R1i6pOB/AWItYVe7bQB2YjKxFVnaqqfVV1HwAzYRr64TDL8XaYcaJXRSTa2XimbYQZ0wmqAaCkYzYbA2XEVZ64F1XFOksZAbNejIY5+/vOfl64ngyEOSBaCNPz8zqKWCdFZF+YHerJwTNqVX1TVXuo6pEwZzd5AKbAnFEOgBnLLs1nl4Xr/mOqulRVVwF4EInvd99X1Yl2+OJ2APvbg5adxLONqurvMI3v4wCWAqgHs/0ULrfIdbMw3mldCtuH299K2zaarDFKRfTuu3hNt2XE92OqnQMXbcS60q47gB9UdZLtz58IYDxM10sNmMZspIgsAzDRfmdRrIY3HnaBPA7TSNQDkK2qf9vy9yhpuemgqtNVtY+q1lXVw2F6DCYkUN4/qjpQVRupameYdS1meap6ZGCZxroyrbDLpah1ZRCAcapa4gsdIjwEYJiqboHp/p1kx7VyANRP0m8k0xwAFeyFFYW6we+KLBY7lrTUlhFXeYFlWS3WmavdLm9V1Zaq2tSWt9j+g5px6GNUtb7dGdZFyDokInvCjMWeZ8eeo+WpDLMzvRqm92qhHbss1duoXQaLUIz9ZBwi97uFcdR9eZzbKFT1XVXtoqp1Ya4BaQF/HzsDO69Hy+1Zf6SwfXiklG6jxW4oxVx6e7jtDqlgjywOAvBFAvV4EcC5IrK7iFSB6RL5JIHyALNgDiw8+rAb0YEwK8c6mDGX7vZf4VFZT5gFsRMxl8dXspMV7fxHrlAXwFw0MBXAagCVxVzR2w8JXJ2WDiKyh52nKiJyDYDGMGfFJS2vtYjUtWMLR8JcSZvQPYZqLvAaA+Amuzw6AjgNO68rgxBH3cXc9lMJZseQY+c/KyLPYQAqqWrhb8wDcLCYK0hzYZZzqWK7pt4DcIeIVBWR3gCOg+nhKKlXAAwTkdoi0gFmiOGlROop5haW1mJ0gjlDusMOZxTeslTdLqczAfS3eaKV1QWmu/8yVf045GeHAXhJVZfA3P7RXkQaogxsozD7yctEpIH4F7Ylsp98EabrubuI5AC4GcBYVV2bSCVFpKfd7uvDXFH7sT3TBMx6dL6IdLLzMAyx16OwfXjw91K/japqsf7BtM4TYU6V1wL4GcBhgfTmMKfXzWN8/yUAd0X5/HaYiy9WwmzQteP5nk1rCXM0VCHi88EwA/kbYDaCq+P9PsyRz8DA9HybJ/ivZSC9HoDfANQIfDYQpitzPoB+Eb85GsAFxf37p+ofzKX0a+yy+wxAm4j0jQAOjPHd2wC8FvHZqQCWANgMYCqAw+P5XkS6RqlHE5gd4ka7TP8dkb4fzJVx1aOU9xmAGyOWQeQy7RtIz7V1bxH47BC7PJcCOD3edTQDy7MOgA/s32IBgH8F0oq9jdq/xQgA6wEsh7ntKfJ7MddpmO6zRRGftQMw264jf0eWCdMQrLTzMBZAr1jrJMxOv8B+VvhvRkT+9jD7ruB2PhTAKpiuu64R+ecDODTTyzJQnxyYIaO1MPuVR2EaiBJto/bz/8Ccwa+BuZWjWTzfC6RH20bHwuxz/4FpKKtGpF9l16H1drnlBtIi97uh+/B0baOZWNjP2QX6V5z5c+2KsQnArTHytIC5xH8tzK0DGV+pQ+anra3nZgDnZLo+SZqnYXb5rI3cKEK+M9uuByNC8myFOfu/M9PzWMS8FLmOlqV/JdhGi1ynYXqdtth8Ox00laZ/dke71ta3X6brk6R54jaawDbK12wRERGFKC0PHCAiIiqV2FASERGFYENJREQUIvRh4IdlncIBzAz5quCdlNzIzmWaOalYplyemcNtdNcTa5nyjJKIiCgEG0oiIqIQbCiJiIhCsKEkIiIKwYaSiIgoBBtKIiKiEGwoiYiIQrChJCIiChH6wAEiIiqfsqpU8eKe4zY4abfWn+rF/Wee6MUVD/s79RXLAJ5REhERhWBDSUREFIINJRERUQiOUQKo0KihF29ru1tc38mZs9iZnn3D7l5ca6b/XN06s7Y6+bLGTClJFYnKjK0D9namK3/2ixdrr05ePO/Yqk6+Aw/+1YvHfNs1ZvmNf8r34kofTyhxPWlnwXHJOc+29+IP6j/r5CsIxAunNfbi1uAYJRERUbnDhpKIiChEuel6XXfmvl68+ii3O/T6PT/34kE1/hdXeS+sa+5Mn1j9fS+ufUqlmN87pknPuMonKu2y69X14vyRlb34rbYPOvmW5+d4cc2s0V7cvEIVxHT2DzGTVpy52YuXPFrRSfv38Mu9uO5zP8Uun6Kae1M3L57Z71EvHjj3SCff6rtbeXHrz39OfcUyjGeUREREIdhQEhERhSjzXa9Z3Tp68e+X+VfRjen/sJOvfvZE/ztJOD44v+aCiE9id7cS7YrmPOIPP8zu8EIgxe1SbZDtx0+ubefFv2xwhy8WbaoV87eyxb/O8tP2H0ctGwBGDvuvF188a7CTljV2KijctgY7on4+fUxbZ7rV5+WrW5tnlERERCHYUBIREYVgQ0lERBSizI9RbmpV3YvnHPlUIKXyzpkT9PRa/+k7r/+9V4nKqIk/k1WdciGru/8kl62N3Ce5zD/efwLSyXtPdNK2qz949d2r/pNiGn+/zsmnU2YkpZ7lge7XzZkeuf8zgSl/V/L5FneM8t6hZ3tx9Rmr/ISV/zj5stYsjP3bWf7ybPd/l3jxzFMfc/K1zqnmxVuGrXfSap7jP4Frx7LlMX+rPMupts2LNxT4cfOv8jJRnVKDZ5REREQh2FASERGFKDVdrxWaNnGmZ13X1IsbjvO72Gq86T4FIitPvXjOdr+rYOEO91LzZhXWevE5v53tpK2Z5T9hpOFEv7xa49yuIN240YtrrmUXarJo7+7O9NxL/fiN/Z7z4p4VI+4FiNdQ/8HZW67Z5iQ9u9bv2n1yWh8nre35s7y4YKv7NKfyaHtN9yk43Sv6u48C+NvN0BfPc/I1e3+cF+ejhAr8b7a50t8HLPNuSAAAIABJREFUdKzo3gIy/bhHvPj7ru86ab0P9btsa77GrlcAyG7TypmecdAIL758ySF+vu9+QXnGM0oiIqIQbCiJiIhCsKEkIiIKkdExyuxaNb1470/nOWkf1PvIi3tPcschgnI/828LGHr0OV6cP2O2+1sd/Ucw1Zn9l5NWp2BO1LKjP8yJSqrgAH8scr4/XIRPez/h5GtdIXhrjz8u+dUW95afG2ce78VrF7hj0r8d7982cPNy/80x9zea5OTrVtl/0eyDe4900m648hwvbnrPOJR3+ZUkZtoe487x4uZ3p+9v1fbS8c70J4f6LxE+pdpqJ23tsZu8uOZrqa1XWTH7ttiPDUynvCP92+02NIvdLNWf7N7yo5PTc3sXzyiJiIhCsKEkIiIKkdau16xK7hs28t71u15vrPetk9b+Pb9vrsP7/ul12OXlkd2tTtqsP+KsJSXL3Dfc2z5ej3mrh9ulesa8w7x44u/+5esdLp/l5Ku/yV/e9SN+++Keh3rxiiEtvPjKp9xbTIY1HO3FY7Y0dtKmDva7b49/7Tgv3rFwEcqj9jfE7ubKnlw9Zlo63TTR744/pd8LTtqlnf2XQX+C2mmrU2n20D4jY6b9+EYPL26ExLvT/3p9T2f6kX3e9OKuFcd6ccPs3Jhl/LndHRA77t0rvbj1Nal7gTTPKImIiEKwoSQiIgqR8q7X7Np+F8fvd7Zz0mZ3fNKLJ0c8c7fDHXO9OH+9e6UTlR5ZVd0Hlf9xR1cvntXHvZo1K3AF68TAE5UGfnipk6/97X4Xa7u1/lWqBYhf1+qLvfirCn737aT/9nTy1X3Qv2ry+Kpr4Yp9lWd5kbVHBy/uW+srJ23Odv9pRfWmb09bncLU/j4wvNMvc/UozbJr1PDiqlnujvfLLf723Oih+LpbJcd/YtO2fns4aTc99aIXH1RpspOWI/7+YEKe39066PdTnHxXtfrSi4+tutlJe/J4v3v94REneHH+zOh3MpQUzyiJiIhCsKEkIiIKwYaSiIgoRMrHKJec2dGLZ5/gvmT1o03++OULxxzmpOWvdJ+eQ6XT2mO7OtPfnvKAF2fBfYHvN1v8cYh7L/Hf4NLmS/ey7njfMCEV/NU3q31rJ+35D+p48X9fedmLu1ZcEVGKX8dscY8bu47/lxc3WVE+18c/zvaf3HJ6tZVO2gHTz/LiGv9zX5xNpde8K7p48QGVvnHSOn03yIvbYErMMoJvHZl9qf9C7MgXaQd9s6WaM33JF+d4cYdH/Bd6585xt7Un4F/b8tg3zZy0Tzq858X3NPdvN6w4M2Y1SoRnlERERCHYUBIREYVIedfrhn22xEx7ZJ7/YtDKc8pn11ZZpxHvUt6qsW+p2FDgP4Fn2T7+JeVbTtzbydem7dKo31+31X2y0ykt/JfJXlrrVSdt0ja//N65wRtL3O7goB+3ujegNLnLnxfNy4vMXi5ceeSnXhy8HQQAKj5RNzDF7beskD1i326X81flmGlBwYep/97Pvw0s8haugXOP9OL11zZx0tr+5N+aFe9wy59zG7kfdIieL9l4RklERBSCDSUREVGIlHe9vtn72cCU2y6/28l/Kdx+D17tpLX6aJsXZ4/+BVQ61f7QfVD2RYMGevFrHdyX/h1b1X8az0n/8Z/KlK+xn7mTp/5DkHMlbHV109zuVt+OiE6evtNP9+I6l7ppOjc977orK55ZfZAzXemTCRmqCSWiQ4Plxf6O9OzsTL9/wFOBqRwv6jz6Iidf2/P9p2zJ1mnF/t2i3LLCf49lpdG/enFxnuIVD55REhERhWBDSUREFIINJRERUYiUj1Hunev3X29XdwyodpZ/uf/vp7lvmth+qp+3yzcXe3HNie4tAhub+uNeNfwXjqDe9E0x67RqD/eNFw1H+09ryedtKsVSsGGDM53b35++qOGJTtqs21p6cf+e/njCnHUNnHx/L67nxdkV/fXg2PbTnXz3N5qE4ur0nTuG0v5q/y0jO5ZHPrWn/MmuVdOZrp5VPl9SvStrWsV/S05W5LmSKKKZM8R9mXLHHH+/3nPimV7ceqD7NJ9kjxXmVNvmTG/a4derYOvWyOxJwzNKIiKiEGwoiYiIQqS867XVxxd68Zxjno77e8GXes4+9Dk/4dCkVMsx4Xr/CSxXzAzcLnBMcl/+Wd7kR3RltvuPPz0/8HlF/O3kaxsxXejL9zs502Fdr/N3+C94Pf6xa/2yH3ZvacjfsQPkW3S+exvAwOrfefEvm1qmuTbFl3fUuphpmwsqxkwrTwrUPz8qiOwcjfFkrcYN3ZeaB7/Xqb5/u8maJNQvUvAB7DMOGuGkHTT9VC+ukcKnQ/GMkoiIKAQbSiIiohBsKImIiEKkfIyy/aX+5cKHv+Nemj/o8Y+9uEqW+3aGY6r4L4kNjlemwt65/iXRY/d83Ys7/3eIk6/10J9SWg/a2bzh+3nxL3s9FJEae8zp5Pv9ccndnhjnxdEvfqeyasfBPZ3pt/Z8PDDl3tLw/n3+24pqwn1ZOIWrdb5768X4Mf7tIY839/fj+913jZOv3aP+9QY7Fi8p0W93HOmXsTzffRtVpUfqBKY4RklERJQRbCiJiIhCpLzrVQOX3+d8PdlJe7PDbjG/9+jJ/m0a+Tn+Jcv7X+Ne3n9vo4mJVtERfFJF027RXyBMqbVk6P5e/MXA+724ssR+6fIja9o4041enOrFyX46CGVWsLv1n8vdJ3B1yPG7Wy9Z3NtJqzXSfwtReeqCD95eAQAH1fy22GVEdpved+jxXtxtlP9ItN/OfNTJd0mffl689Og6Tlr+6n+8eO1Z/hDLAVeMd/Ld0vBHL+75ltu12/rz9HSh84ySiIgoBBtKIiKiECnvei2pqu+Oj/r5x932c6bvPcvvet2s/gNze/7wHydfi+f9K2dXDdnspE3ay33BMKXX9v69nOkPBvvdrc0rxO5uXRB4+s5H1x3ipOVuTm6XfHlRY7774oLgE44ySSr4u6q1V/oP3p/U4y0n31dbKnvxnJvdpwxV3F78h+jvCvL/nOdMv7Vsby8+ofXnTlqLAxZ4cXaNGn4Z69c7+XbMne/Fk/f0z7cOOsu9U6DOdP+JPlJvu5M27/FmXjzjIP9q5cgrW4Pdra2vyczVyjyjJCIiCsGGkoiIKAQbSiIiohCldowyluZfuE/wwVl+WEX8J7XM6vOCm63FYV78v5ZfRJQa/XhhwTL3cua2zjsvKFnmH+M+ealljHHJpfnueNmgK6724iqfRh/TpuKpOsr9O35+Z0cvbl1ppZP2R9MuXrxj0WIkquCA7l487xI37aSO/u0+wxu445JBw68524srfzEhZr7ybOsF/tjjg6M6OGmfdPjQiy//xr+9ZsLT7rUh1ZZEf+vOyr3cm7H2GuLfOvJ/u4110oK34j27rqUXv/TAMU6+1iMy/0Q0nlESERGFYENJREQUosx1veZM+sOZ3veXM7z45x5vxvzeqy2/Cky5xwd56l+2fEzgxc0dhrgP2XUvnKdEZNf1u7WnnPhwRGououk7drAz3fp9drem0yW13NsMln/id+FN+qd5wuXf2+pZL+5eMfauafI2f0s8a8L5Tlrrb3/3Ym6v0eXP8fdrPxzn3kJT+1P/SUcP7TbGT7hjDGIJdqHu9CLoEF3GnuvFba5a5cV1Fme+qzUSzyiJiIhCsKEkIiIKwYaSiIgoRJkboyzYsMGZbnRZbS8eMOJYL76x5adOvv1y/RGLURvrOWk3/e80L25zpf+IJI5xJFd2bX9ZXTHeH/OoJtHHJAHgvtX+7QltL3THp/lWkNQLXqq/4vIfnLTb60/zJ4Jxifm7ox0RW980/+mUOHOk/5i0Vte741ncZosn+Cg6APigr3/Lz6Pn+m8I2dTKffzcF0f41xUc/sUVfkLIa1naP+++/LnlxOl+PeKpbAbxjJKIiCgEG0oiIqIQZa7rNdKO+f7T7nGwHw4Z4j7aY8Ne/hPpOwxb5aS1+TszT6Qvb1Yd6z8FpH+V77w4P6S75n+39/Xiqpt4O0i61Qk8FWXiD+2ctAc/8LvSrqrtdouXRIfvz/Piir+6T2dqes84L26F0nf7wK4if/kKL25y74qY+S6D/9SedojvTT1l+WXZPKMkIiIKwYaSiIgoRJnveo2l4aPj3OlAXNqvsNpVnXTN116cr7GvWW3z8cVe3G4Uu1tLi8gXAH/dpbofo0fC5e+OqUVnIsoAnlESERGFYENJREQUgg0lERFRiF12jJJKn26V/Vt5ssU/Rvt5q/s8lU73+5elczyZiDKNZ5REREQh2FASERGFYNcrpc0Vr/sv2f39wie9+LwRlzn5ms11b+0hIsoknlESERGFYENJREQUgg0lERFRCI5RUtq0uNUfezz81u5e3AwckySi0otnlERERCHYUBIREYUQ1bL8Ok0iIqLU4hklERFRCDaUREREIdhQEhER/X97dx4mVXGuAfz92IZVkFFA9n2VHVwDAmJQrxJJMIq4oCIhcckVJRo3EDVqTBTFJS6gorihApIbdyBKBBFEQASMsiiKgig7ss13/6iaOqea7jM93T3TDby/55nn+U5XdU11nzpdp+psEdhREhERRSj1jlJERovIHhHZJiJVknzPlyKyW0SejcijIrJdRO7IXG0zT0Ra2s++T0SGZrs+mSAiT9n1szrJ/EV+ByLSS0QKbL5TM1rhDBORvraeBSLSN9v1Ka5DfZssiojMEJGfRWR2tuuSKm6jcqmtp4pI8+K+P6WOUkTa2MazWUS+EJEBxSziRVWtqqrbbXk1RORpEVlv/0aHM6tqMwB/SaLcjqp6Y6ieZ4rIp/YL+kBE2obShthGsC301yvB5x0ck2+H/cK72vTzRGSdiKwKlyEizez/LRv6LJ+ralUA7yfzRZUWEakpIlPsD9saETmvmEX8VVUbh8rLE5EJIrJFRL4TkRGFacX4Dr617eQNW6aIyI0i8pUt9wUROSz0P+uJyDQR+VFE1orI8IjPW1RZI0XkB9t+jg69fqKITA2Xparv2M/zFbJERK4QkfkisktEnkqhiNhtsreIzLTb+OrYzGlsk4+JyAr7Azskzue42raXzbb95IXSGts67RCR5VE7JVHtT0QaiMhc207+HvO+N0SkW8xn7QMgYVsqLSIyy3bYhb9DK4pZROw2Wth5hn/bygK5sY3GfPYnJaaTE5GxIvKTiMwRkXqh1weLyP3h96vqePt5UlLsjlJEygGYBuCfAGoCGAbgWRFpmWolANwHoDKAxgCOAXCBiFycRnkQkRYAJsE08BoApgN4zda/0By7kgv/ZsUrS1UnhfMB+AOAlQA+tuXdBaALgCsBPBh66wMARqjqvv0KzT0PAdgNoDaAwQAeEZF2aZQ3GkALAI0A9AbwJ0l/r/NCABcAOBFAXQCVAIwLpT8LYBXMZ/gfAH8Rkd7FLUtEjgJwKYCmAP4Bs34L2/7fAfxvmp+jJHwL4HYAEzJU3nZb1sgMlVdoEcz283Fsgoj0A3A9gJNhfguaArg1lOV5AAsB5AO4EcDLInJkgv8zGonb358BPA2gCYCzCjtGETkHwEpVnZ/6xytxV4R+i1ploLy/xvwGpvtblcltFAAgIr8A0CzmtWMAdAVQB8BsmHUKEakO4FoAt6T5OTypjChbw3wB96nqPlWdAeA/MF9Oqs6EWWE7VHU1gPEALkmjPADoB+B9VZ2tqnsB3A2gHoCT0iwXAC4CMFHNRaj5AL5R1XUA3oHZuCEiA+3rczPw/0qUmOm23wC4WVW3qepsAK8hvXV6IYDbVPUnVV0G4HEAQ9Ks6pkAxqvq16q6DWadniMilUWkKoBeAO5Q1T2qugjAy0jcjhKWBaAhgIWqugWhdQrTQb5m22hOUdVXVXUqgI0ZKm+eqj4Ds0OYMar6kKq+C+DnOMkXwayTpar6E4DbYNuM3RHvAmCUqu5U1VcALIFpt/FEtb8mAGao6mYAHwFoakc91wO4IQMf81CWyW20cOd0HIArYpKaAJitqrsAvItgG70DwD123WZMKh2lJHgtPD21ye4FpFquV16KJE6ZseV2ttNrn4vIzTGjzfiFijQC0BPARPvSBgD5IlIfwCkAltoGcRPsXs4BoCWAfar6eei1RQDaAYCINLTrtGEyhYnI4TA7U4vilZeGeOs0D2bkIKHXwumJ2lFUWV8AaC8iNQD0hVmnDQCcC+BvaX6GrEhxmyxt7bB/m6ktIvk2baWqbo1J369NJdH+PgVwil2/3QB8BtMpj1XVTRn6LCXlTvub9R/xD/MUaxsN+YOdBl0gIol2Ooojk9soAFwN4D1VXRzz+lIAPUSkEswMxFI7M9BKVZ9Lo/5xpdJRLgewHsBIESkvIr+EGaVVLsygqjXsqCRZbwC4XkSq2TnoS8LlpehtACeJOeBcAWZPsUKo3PdgVlAtmL3SQUhumulCmJHqKgBQ1QIAv4fZM7oWwGUAxsDsBbW3x1TelNBxrhxUFUDsHthmANUAQFW/sus02WNwhccCwmW68tLwOoCh9lhVdQDX2dcr2x/Q/wC4WUQqikgXmPWaqB1FlbURZs90Bsz00LUA7rd5BojIv+1xlvppfp5Sk8I2mQ2x7bAwrhYnrTA9Xpsqqv3dCaAHgH/DHHIoD6ADgOki8pyIvCcisSOYXHAdzMipHoDHYOrbDEhpGwXMoaEWML+BNwN4SkROTLOOGdtG7c7p7xBnGlVVPwXwCoC5MDNAd8Nso1eJyFV2HU6yO0NpK3ZHqap7AJwF8wPyHYBrALwEYG0a9bgKwE4A/4U5/vl8VHki8nro4PPgBPVcDjOV8yCAdQCOgNlzXGvTV6rqKlUtUNUlMJ3bwCTqeiHM8Y3w/3pXVY9T1ZMAFMDspT4F4BmY6Z7bADyRRNnZsg3AYTGvHQZga5y8yZZXWEZS5cWcUJBor3gCTNuYBbNHOdO+XthWBsNMyXwN4BGYY9SJ2lFkWar6vKp2UdXTYHaodsEcH/sbzPTSZBygo8uSkMw2mYTYdlgYb42TVpger01Ftj9V/VFVz1HVjjA/ruNgzi+4Hma02RfAcAmd/JcLVPVDVd2qqrtU9WmYTuf0NMr7WFU3qupeVf0XzPby60T5s7CNjgUwJtE0qqrep6odVfUcAOfAnHhUBua8mZMBLINZp2lL6axXVV2sqiepar6q9oPZy5mXaiVswx2sqnVUtZ2tV8LyVPW00MHnSRH5XlbVo1U1H8AomAP7HyXKjvjTyo7d26oLM3qMly4wHfNVMB1zWVVdY/9nh6iys+xzAOXsCVCFOsI09GKzx5fW2TKSKi/mhIK4e8V2p2aUqjZW1fq2vG/sH1R1jaqeoapHquqxMMeP47ajosoqZKd2/gKzQ9gCwNf22GWur9NSlew2WYSl2L/NfG9H+EthjiVWi0nfr00Vs/0NAzDXjlDaA5ivqrthjn/m8iwQkMRvVibLK+1tFKazu0fMWcvf2dfmSMwZ+SJSG2bkOQZmnS22A7qMbaOpXh7SwQ6dK4vItQCOghlBpUTMZRT5IlJWRE6Daby3p1peqNyutswjATwKYLodaUJETrNfMESkNczUw7QiirwIwCsxx0nChsKcBPIJzEkVlexeaW9k+KSITFJzScCrAMaISBW7Q/ArmBFxqiYCuElEDrff72VIo40A7hKWZmK0BXAvzB5ngU1vY6fvK4jI+QB+afMUu6yQmwA8parfwlz+0cq2m5xapyJSTkQqAigLoKzdPlN+3qyIlLHllTeLUtEewki3nhVsuQKgvC238HdoIoBLRaStPc54E2ybscfPPwEwyr5nAMyP4CsJ/lWR7U9EagG4HOYMWcCcjdlbzDkG3ZBb67eGiPQrXK921N4TwJtplDlQRKradf1LAOfDnMSXTj0zto3CnDvREUAn+weY2ZwpMfnuhTnJawfMOuwuwYlDmVmHqlrsPwD3APgJZorjdQDNY9K3AeiR4L2jATwb89pvYU5v3wGzMfRL5n0x6RqnHrNhplt+hOkoq4TS/gbge5jT4FfC7I2UD6UvBTA4tFwRwCYAJyf4/0fATNscFnptMMz09GoAvWPyzwIwNJXvvyT+YC71mWq/j68AnBdKa2jXacME730KwO0xr+XBTMNssd/ziDjvS/gdwDTytTGvtQSwwraTNbFlwpyVusF+htkAuiVql0WVZfO0gtkrLRd6bSSAH2Cm8dvH5F8NoG+W1t9ouw2E/0bH++wJ3hu7TfaKU96sot4Xkx5vm5wVp9xeofQRtr1sAfAkgLxQWmP7/p123fUNpQ0GsLSY7W8igLNDyw0AfAjz2/b3mLxDYM6yzNb2eaRti1thfofmAjgllJ7KNvo+zLHbLTAnO50b532zkKVtNMn21BvA/8W8Ntauw7kA6hdVRlLffxZW+E32S9qEUMdVxHtW2C9wQkSen+1Kvy1bjTnJz9LCfvYdAIZkuz4Z+kyP2/XzZaa+A5i95Z023347Trn0BzNFtMnWt3e265NC/Q/pbTKJz/q27aDezXZd0vgMh/o2erGt588Amhb3/XweJRERUQTeFJ2IiCgCO0oiIqIIkWfFnVLmbM7LZsnbBZMzedq3w3WaPSWxTrk+s4fb6MEn0TrliJKIiCgCO0oiIqII7CiJiIgisKMkIiKKwI6SiIgoAjtKIiKiCOwoiYiIIrCjJCIiisCOkoiIKAI7SiIiogjsKImIiCKwoyQiIorAjpKIiChC5NNDiIgy6Yv7jnPxl+f8w0u7cE1PF39//JZSqxMV394+XV28akDQjVxz8r+8fMOqr3ZxGfgP5ihA8JCUUes7u3j66qO9fHXvLBsszFuSUn3TxRElERFRBHaUREREETj1SjmnXJ3aLt58YmMXf3OK/zzbVf0fc/Ee3eelnfjJuS7e8PXhLm5713devr2rv0qrrlQ8Jx73WcK0iY3ec3GPAb/z0ipP+bDE6nQo++a6E7zl7S12u3hQ13kJ33drrWDbK0CBi8vEjL3CaW1mDfPSar2W5+JqL851cV0kbiPZwhElERFRBHaUREREETj1SlkhecG0y8pbu3hpDw58wsUnVdqRsIw9Guznhad4AOD9Ts8FC51CYf4lXr6GZydVXcqQ8PRqlG97+mdINp9SErWhRVc96C2Hz0T9ft9OFz+80Z+ibfl6MDVe5b8VXFzxB//wSP74OS5uhoXpVTaLOKIkIiKKwI6SiIgoAjtKIiKiCAf8Mcp9vYLjW+Vu+d7F01u95uUrL8HdHaIuJci/sbyLZfU3Xr6NZ7Z1cc2pn3ppBVu3Fqfah7yvRgZ39lhywf0plXHxmpNdPL7R20m955MTJnjL/dE9pf9NJav51XOLzkRp67lkoLc8o/2LLg4fl1zQ2R9TtcT8kq1YjuGIkoiIKAI7SiIioggHxNRr+FKCrf07eWmj7gym0sKXEvgXCwB7QmctR11K0OXmIS7uWMffj5jWODiVunuNK7202uM+iF95cvT4ji6ecMm4Yr+/w5NXectNbvvYxa3vu9xLW/6rh4pdPtGhpsZlu73lf76b7+Kzaixw8SdtzvPy7Vv235KtWI7hiJKIiCgCO0oiIqII7CiJiIgiHBDHKHf1au/iGWMfTJhv5s6qLr7ldv9WZeV3aGx2Z0ujYH+hQuiOaX+61r+UYHPBXhdXXedfYkL7Cx+TBAC9/UcXdw0OO+93PHnKtlounjCkv4sbf+g/zUALgnXQ6upFXtppU3/v4tv+ETzpoFuev976fhpc1vPO0dViPwJlWLMXh7s49sHNYeEHPAO8XKSk7P16rbd8/ZTBLv7s/OC3dncdf9sou6xk65VrOKIkIiKKwI6SiIgoQs5OvYan7e585NGE+QZ9ebqLt4xq4OLDZ86Jlz2u6s2buLjT5C9d3KaCvx/RetrVLm75Mh8kW5T13at4yx+1Dqayw3dK2lzgn6I+6qXgTkmN5yS3HnXXLm+5/FvBnUPOfzOY7lt6pj91P7JmsL4ff/4iL63JIH86l9IXNd1KOSD00JYyoYWN7Sp62WpKVyQjb35wGcm+LVvSq1sWcURJREQUgR0lERFRhJydev3pxuChoeEzJE9f/msvX9lrDwvihR8jFZu61nbxqFovJczX4K2Uij9klem70VsO3xEpfKeki1f29/I1vjn5afNktPx9cLbsuF+089JG1Fzu4sFtP/LSPkAFEB3MyjWo7y3fddYkF4cf4jz3z/6DC8og/kPTy8SMvXotCZ6Mvmuyv+2FH+qc6ziiJCIiisCOkoiIKAI7SiIiogg5c4xy1QsdvOWlnZ908dq9wfHKMjce7uXThYuL/b/CTyMBgOb/+1lQfmjfIfxgYACoNNW/Mwztr1y9ui6+ptU7Sb1n5eQW3nJtbMhoncImTOvrLY+4eHmCnEQHp/BxydPf9C+B6l/lJxePWt/ZxdNXH+3l07k14pbd/9zZ3vKIpsFvwFljNnlpBWOCY6CnXjDMxeFLSoDcuKyEI0oiIqII7CiJiIgi5MzU64Vt/WnN8CnHa/YGl4BgbvGnWgF/unXFWP9m3dMaBg/5Dd+ge809rbx8lcG78RTlp180dPHAqtMS5hv2dS8X1wvdDQkA9iI7jq7k3yB6XtM+Lt67cnUp14aoZGzrFBweGVbd30Z7Lv6tiw87Ldgu6+IzJGPB3f7Ya1H9Hi6+aWgjL+24U5e4+I1nggcXPLSpmZfv9YuDMjBvCbKBI0oiIqII7CiJiIgi5MzUa6aVbedPmy67srqLl5/5UGx2J/xMy2ofrPLS+ATKom3oIkVnAvDlXW1cXOm73Dib+Iwq/p2E7u1Wx8VVOfVaqvj8yZJTcXqwvZ0x3b+5+WH4MjZ7Wvau/cbFDUd/46V9OzqIO193pYtjz5y97cXgYQp/vnS4l1ZuxoIM1LJoHFESERFFYEdJREQUgR0lERFRhJw5RvnKqk7e8sj84DTgznnbXdxj8c9JlXdM5Ve95d6VgvcVxGYOuWbRQBfX/35pUv+BHdQxAAAFvElEQVSLAvsqJ36SQFiu3OUo/ADp8BNNiKj01Lv7AxcvmtTASzvqzc0uHvPE417aH++43MUl+TQSjiiJiIgisKMkIiKKkDNTr3XO908d7j91gIv/2Tq4e0R4SrY4eoROPy4Y5F8G8H6n51xc6/HKKZVPRocOq11cEDnJnRv2aHDRz4FQX6KDXfiSEgCYfEM/F68b7V829PBND7j4ogZ/dHHD0R8gkziiJCIiisCOkoiIKAI7SiIiogg5c4yyYOtW/4WTg+U+A/7g4vVdE/fthy8Lzu+vPsmfy97wzC4XL+/0gpc2fnNjF1deus7F2XqKBWXHmr27veVKG3YnyElEpaXStOBSskULEl868sll97u4/+juGa0DR5REREQR2FESERFFyJmp1yiVpwQPTG48JbUylvd5wsWxlwE8tOIkF9f9OrkHlNKBaehZbyVM+9WTI73lhjMze4o5AReu6eniiY3eS5jvi/uO85b5NBEC9r905IFFvV08/KSVJfZ/OaIkIiKKwI6SiIgowgEx9ZqK2Ac3A8EDPmPPbqz9QMVSqNGhYfstdV08/8myXlq3vOAuOF9Nbu/ihmendrelVHSv5D+Me96u4EHTje9Z5KXxPj1EOeaY9t7iM8eNd/FDm5qV2L/liJKIiCgCO0oiIqII7CiJiIgiHLTHKFeOqpAw7eyFQ73lOjM/LunqHDLK/Huhiy8fe4WX9tF141z89rGPuHhI76u8fGUzvD5WvdDBxSdWXOClnbBwkItrbv88o/+XjB0DjnXxxEaPZrEmFGvNrSd4yxV/COLa43Lj8qiybVu6eMuY7V5a/XI7XfzGkB6hlMye98ARJRERUQR2lERERBEOqqlXPb6ji1879uGY1OASEHn38FKq0aHtqFk/esvd+pzv4vndn3Xx2l7+5TmNZqb/v7f/Jpjue+nY4OGuc3bleflq3s5Lg0pakz8ty3YVKGTjpce7eMnQcV5am1nBYanaflLayjWo7y2vOa9h3HxNT/fvsHNDg+ddPHenfwnIgNHB3bRqfjQn3SomxBElERFRBHaUREREEdhREhERRTiojlGu717FxU3K+ceewk8MKfezgkpeweLl3nK9G4PbCk6ZUtPFrw25x8t36hEjXNzi8g+RiHRt5+Lvj6/upT16TfAQ1zYVgv3B1tOHeflazp0Hyqzw5SBA8peE9Lj8dy5uPoVPCykN5cW/zeSyXsFTlhauCn4zz5tzmZdPQnHPpl+4eMWmWl6+me0nu7gM/Mu+CqChtKDEhzc18fINmhG0i7aj13lpNdeW3HHJMI4oiYiIIrCjJCIiinBQTb3+fEQwlI99OPPYH9u6OP/x0hmuk2/f0hUufvrU4IGrjz7mr6s3zrjXxS/16OriF57r4+V7Ylhw/nrnvMTP+jj1s4Eubv3IVi+NTwgpXc1eHO7i2IcxV0biaXbKnPzxwe/fCduHe2nrz9wV9z1PHz/eWz4mL/itDT+1o8CblPUvNynY6N8tremUPXH/V4UFX3jLLbfMd/HeuO8oeRxREhERRWBHSUREFOGgmno9/6zEt3SZMK2vixuDU6/ZtnflahfnDTrSSxve+Y8uLn/ddy5ecOX9Xr7W0y9PWH6TV4NJ1byZi11csGd3vOyUQZWn+FOo/aZ0cnFz8GzWXFLthbkxy/HzjUGXJEv0D200w8IE+RLbV3SWUscRJRERUQR2lERERBHYURIREUU4qI5RvrIqOBYyMj+zD+6kkrNvwwZvufxboeW3grA/unv5WiK5u+rwPkxElA6OKImIiCKwoyQiIopwUE296rvBjbZvqO/fmLn2/Fw86ZiIiHIdR5REREQR2FESERFFYEdJREQU4aA6Rln7gQ9c/OkDflqlJC8lICIiCuOIkoiIKAI7SiIiogiiyvuWEBERJcIRJRERUQR2lERERBHYURIREUVgR0lERBSBHSUREVEEdpREREQR/h9FHjWuo+MxxgAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 576x576 with 16 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "with tf.Session() as sess:\n",
    "    ckpt = tf.train.get_checkpoint_state('./')\n",
    "    if ckpt and ckpt.model_checkpoint_path:\n",
    "        saver.restore(sess, ckpt.model_checkpoint_path)\n",
    "        final_pred, acc = sess.run(\n",
    "            [pred, accuracy],\n",
    "            feed_dict={\n",
    "                x: mnist.test.images[:16],\n",
    "                y: mnist.test.labels[:16]\n",
    "            })\n",
    "        orders = np.argsort(final_pred)\n",
    "        plt.figure(figsize=(8, 8))\n",
    "        print(acc)\n",
    "        for idx in range(16):\n",
    "            order = orders[idx, :][-1]\n",
    "            prob = final_pred[idx, :][order]\n",
    "            plt.subplot(4, 4, idx + 1)\n",
    "            plt.axis('off')\n",
    "            plt.title('{}: [{}]-[{:.1f}%]'.format(mnist.test.labels[idx],\n",
    "                                                  order, prob * 100))\n",
    "            plt.imshow(mnist.test.images[idx].reshape((28, 28)))\n",
    "\n",
    "    else:\n",
    "        pass"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "基础作业：\n",
    "对模型结构的理解10分。 \n",
    "对模型训练过程（梯度如何计算，参数如何更新）的理解10分。 \n",
    "对计算图的理解10分。 \n",
    "解释这⾥的模型为什么效果⽐较差10分。 \n",
    "\n",
    "1.模型由两层感知机构成，第一层神经元个数有一百个，第二层神经元有十个代表着数字0-9的数字分类。\n",
    "2.通过梯度下降法最小化交叉熵损失来训练，通过前向传播确定参数，再反向传播计算修正权重。\n",
    "3.sess.run运行y可以求出网络预测值，运行accuracy求出准确率，执行loss可以得到损失值，再反馈计算。\n",
    "4.训练次数较少，学习率偏高。所以效果比较差。"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
